package com.tvunetworks.center.device.mapper;

import com.tvunetworks.center.common.model.vo.TimeLockDeviceMsgVo;
import com.tvunetworks.center.device.model.TimeLockMsg;
import com.tvunetworks.center.device.model.vo.TimeLockDeviceVo;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper;

import java.util.List;
/**
 * @author Etan Yang
 * @create: 2021/10/13 16:04
 */
public interface TimeLockMsgMapper extends Mapper<TimeLockMsg> {

    /**
     * 根据eventId和peerIdList批量逻辑删除timeLockMsg信息
     * @param peerIdList peerIdList
     * @param eventId eventId
     * @return int
     */
    int batchDeleteByPeerIdsAndEventId(@Param("peerIdList") List<String> peerIdList, @Param("eventId") String eventId);

    /**
     * 根据eventId获取Report的TimeLockMsg集合
     * @param eventId eventId
     * @return TimeLockMsg集合
     */
    List<TimeLockMsg> listSynchronizingMsgByEventId(@Param("eventId") String eventId);

    /**
     * 根据eventId获取Start的TimeLockMsg集合
     * @param eventId eventId
     * @return TimeLockMsg集合
     */
    List<TimeLockDeviceVo> listSynchronizingStartReceiverMsgByEventId(@Param("eventId")String eventId);

    /**
     * 根据eventId和peerId逻辑删除start/stop/report记录
     * @param eventId eventId
     * @param peerId peerId
     */
    void logicDeleteMsgByEventIdAndPeerId(@Param("eventId")String eventId, @Param("peerId") String peerId);

    /**
     * 根据rid的集合获取正在timeLock的设备信息
     * @param rids rid的集合
     * @return 返回正在同步R的集合
     */
    List<TimeLockDeviceMsgVo> listSynchronizingReportReceiverMsgByRids(@Param("rids") List<String> rids);

    /**
     * 根据rid的集合获取正在timeLock的Pack信息
     * @param rids rid的集合
     * @return 返回正在同步Pack的集合
     */
    List<TimeLockDeviceMsgVo> listOpenTimeLockPackByRids(@Param("rids") List<String> rids);
    /**
     * 检查R那边是否收到了停止TimeLock指令并且关闭成功
     * @return TimeLockMsg
     */
    List<TimeLockMsg> checkReceiver();
    /**
     * 将已经正常关闭的R,DB中receiverStatus状态值设置为1,表示正常关闭.
     * @param id 主键Id
     */
    void updateReceiverTimeLockStatus(String id);
}
